import config from '@/config'
import auth from './auth'

// 请求拦截器
const request = (options) => {
	// 获取本地token和alias
	const alias = uni.getStorageSync('alias')
	const token = uni.getStorageSync(alias + '_token')

	// 如果没有alias，直接停止请求
	if (!alias) {
		uni.showModal({
			title: '提示',
			content: '无效的访问链接，请重新打开',
			showCancel: false
		})
		return Promise.reject(new Error('无效的访问链接'))
	}
	
	return new Promise((resolve, reject) => {
		uni.request({
			method: 'POST', // 默认使用 POST
			...options,
			url: config.BASE_URL + options.url,
			header: {
				'Authorization': token ? `Bearer ${token}` : '',
				'alias': alias,
				...options.header
			},
			success: (res) => {
				console.info('请求链接：', config.BASE_URL + options.url)
				console.info('请求参数：', options)
				console.info('请求响应：', res)
				// 未登录或token过期
				if (res.data.code === 99) {
					// #ifdef H5
					auth.wxH5Login().then(() => {
						// 重新发起之前的请求
						request(options).then(resolve).catch(reject)
					}).catch(reject)
					// #endif
				} else {
					resolve(res.data)
				}
			},
			fail: reject
		})
	})
}

export default request 